import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test {
    public static void main(String[] args) throws SQLException {
        //1.创建数据源dataSource，填写url,user, password
        DataSource dataSource = new MysqlDataSource();//向上转型，降低耦合
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/etoet?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("221520");

        //2.和数据库服务器建立连接
        Connection connection = dataSource.getConnection();

        //3.构造sql（可以不写分号）
        //String sql = "create table student(id int, name varchar(20))";
        String sql = "select * from student where id = ?";//?为占位符
        PreparedStatement statement = connection.prepareStatement(sql);//准备好的语句类，带有语法检查,可以将sql解析为结构化数据
        statement.setInt(1,3);//设置第1个占位符值为3

        //4.把sql发送给服务器执行
        // 写数据（增 删 改）用executeUpdate()接口，返回n表示影响到n行记录
        int n = statement.executeUpdate();
        System.out.println(n);

        // 读数据（查）用executeQuery()接口，返回resultSet结果集合
        ResultSet resultSet = statement.executeQuery();
        while(resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println(id + name);
        }

        //5.关闭连接，释放资源，后获取的先释放
        resultSet.close();
        statement.close();
        connection.close();
    }
}
